/*
 * HashExtensible.h
 *
 *  Created on: 29/10/2012
 *      Author: pablo
 */

#ifndef HASHEXTENSIBLE_H_
#define HASHEXTENSIBLE_H_

#include"Registro.h"
#include"HashTable.h"
#include"BloqueHash.h"

class HashExtensible{

private:
	unsigned int cantBloques;
	HashTable tablaHash;

	//Métodos Privados
	void duplicarTabla();
	void redispersar();

public:
	unsigned int getCantBloques();

	/**
	 * Carga la tabla con el archivo de bloques.
	 */
	void cargaInicial();

	/**
	 * Agrega el registro al bloque correspondiente. Si el mismo se desborda
	 * duplica la tabla y redispersa; si no crea un nuevo bloque y redispersa.
	 */
	void agregarRegistro(Registro*);

	//Registro eliminarRegistro();
	void modificarRegistro();
	void listar();

	HashExtensible();
	~HashExtensible();
};

#endif /* HASHEXTENSIBLE_H_ */
